package dragon.modules.system.user.action;

import dragon.core.db.DML;
import dragon.core.exception.ExceptionHandler;
import dragon.core.util.GlobalParameter;
import dragon.core.util.Handler;
import dragon.modules.po.SysUser;
import dragon.modules.system.user.dao.UserDao;

public class UserHandler extends Handler {
	private UserDao userDao = new UserDao();

	/**
	 * 用户登录
	 * @throws ExceptionHandler
	 */
	public void login() throws ExceptionHandler{
		//TODO 同一IP3次错误禁止登录
		String login_name  = getParameter("login_name");
		String login_pwd  = getParameter("login_pwd");
		String result = failString;
		SysUser user =DML.loadObject(SysUser.class, "where login_name = ? and login_pwd = ? ", login_name,login_pwd);
		if(user != null){
			setSessionAttribute(GlobalParameter.User, user);
			result = successString;
		}
		output(result);
	}
	
	

	/**
	 * 登录历史列表
	 * 
	 * @throws ExceptionHandler
	 */
//	public void loginHis() throws ExceptionHandler {
//		SysUser user = getUser();
//		String itemsPerPage = getParameter("rows");// 每页显示数据条数
//		String targetPage = getParameter("page");// 目标页码
//		String sql = "select  lg.*,lg.IP as ipa from " + SysUserLoginLog.tableName + " as lg  where userid=" + user.getId() + " order by logintime desc";
//		Page page = new Page();
//		page.setItemsPerPage(itemsPerPage);
//		page.setTargetPage(targetPage);
//		page.setSql(sql);
//		DML.query(page);
//		output(page.getJsonMapResult());
//	}

	
	/**
	 * 用户修改方法
	 * 
	 * @throws ExceptionHandler
	 */
//	public void modUser() throws ExceptionHandler {
//		Map<String, String> parameter = getParameterMap();
//		SysUser user = DML.loadObject(SysUser.class, "where id=?", Integer.parseInt(parameter.get("id")));
//		if (parameter.get("username") != null && !StringUtils.isEmpty(parameter.get("username"))) {
//			user.setUsername(parameter.get("username"));
//		}
//		if (parameter.get("pwd") != null && !StringUtils.isEmpty(parameter.get("pwd"))) {
//			user.setPwd(new Md5().getMD5ofStr(parameter.get("pwd")));
//		}
//		if (parameter.get("email") != null) {
//			user.setEmail(parameter.get("email"));
//		}
//		if (parameter.get("phone") != null) {
//			user.setPhone(parameter.get("phone"));
//		}
//
//		if (userDao.updataUser(user)) {
//			setSessionAttribute(GlobalParameter.User, user);// 用户修改，由用户调用，所以需要重置Session域属性
//		}
//
//		user = null;
//		parameter = null;
//
//		output("t");
//	}

	/**
	 * 停用启用 用户方法
	 * 
	 * @throws ExceptionHandler
	 */
//	public void sors() throws ExceptionHandler {
//		String ids = getParameter("ids").trim();
//		String state = getParameter("state");
//		output(userDao.changeUsersState(ids, state) > 0 ? successJSON : failureJSON);
//	}

	/**
	 * 移除用户和组织关系，使用户成为未分配用户
	 * 
	 * @throws ExceptionHandler
	 */
//	public void remove() throws ExceptionHandler {
//		String[] id = getParameter("ids").trim().split(",");
//		for (String s : id) {
//			SysUser user = new SysUser();
//			user.setId(Integer.parseInt(s));
//			user.setOugroup("/");
//			userDao.updateUserOrg(user);
//		}
//		output("t");
//	}

	/**
	 * 添加用户到组织
	 */
//	public void linkOrg() throws ExceptionHandler {
//		int org = Integer.parseInt(getParameter("org").trim());
//
//		String ougroup = orgdao.getOrg(DBUtil.getDatabase(), org).getIdpath();
//		String idsString = getParameter("ids").trim();
//		String[] ids = idsString.split(",");
//		int f = 0;
//		for (String s : ids) {
//			SysUser user = new SysUser();
//			user.setId(Integer.parseInt(s));
//			user.setOrg(org);
//			user.setOugroup(ougroup);
//			if (userDao.updateUserOrg(user)) {
//				f++;
//			}
//		}
//		output(f == ids.length ? successJSON : failureJSON);
//	}

	/**
	 * 变更用户组织
	 */
//	public void changeOrg() throws ExceptionHandler {
//		int org = Integer.parseInt(getParameter("orgid").trim());
//		String ougroup = orgdao.getOrg(DBUtil.getDatabase(), org).getIdpath();
//		int id = Integer.parseInt(getParameter("uid").trim());
//		SysUser user = new SysUser();
//		user.setId(id);
//		user.setOrg(org);
//		user.setOugroup(ougroup);
//		output(userDao.updateUserOrg(user) ? "t" : "f");
//	}

	/**
	 * 用于前台页面中通过combotree的方式调用
	 * 
	 * @throws ExceptionHandler
	 */
//	@SuppressWarnings({ "serial", "unchecked" })
//	public void combotree() throws ExceptionHandler {
//		String id = getParameter("id");
//		String pid = id;
//		// 判断用户权限
//		if (StringUtils.isEmpty(pid)) {
//			SysUser user = getUser();
//			if (user.inGroup(Roles.Administrators)) {
//				// 系统管理员，默认从根节点查找
//				pid = "0";
//			} else {
//				// 普通用户，从其所属组织机构查找
//				pid = String.valueOf(user.getOrg());
//			}
//			user = null;
//		}

		// 加载部门
//		String orgSql = null;
//		if (!StringUtils.isEmpty(id) || "0".equals(pid)) {
//			orgSql = "select id,name from " + SysOrg.tableName + " where state='1' and pid=" + Integer.parseInt(pid);
//		} else {
//			orgSql = "select id,name from " + SysOrg.tableName + " where state='1' and id =" + Integer.parseInt(pid);
//		}
//		List<Map<String, Object>> orgs = DML.query(orgSql);
//		orgSql = null;
//		// 结果(包含部门和用户)
//		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
//		for (Map<String, Object> org : orgs) {
//			Map<String, Object> map = new HashMap<String, Object>();
//			map.put("id", org.get("ID").toString());
//			map.put("text", org.get("NAME").toString());
//			map.put("state", "closed");
//			map.put("attributes", new HashMap<String, Object>() {
//				{
//					put("kind", "0");
//				}
//			});
//			list.add(map);
//			map = null;
//		}
//		orgs = null;
//
//		// 加载用户
//		String userSql = null;
//		if (StringUtils.isEmpty(id)) {
//			userSql = "select id,username from " + SysUser.tableName + " where state='1' and org=0";
//		} else {
//			userSql = "select id,username from " + SysUser.tableName + " where state='1' and org=" + Integer.parseInt(id);
//		}
//
//		// 过滤角色
//		String role = getParameter("role");
//		if (!StringUtils.isEmpty(role)) {
//			role = role.replaceAll(",", "','");
//			userSql += "and id in(select userid from " + SysUserGroupLink.tableName + " ugl left join " + SysUserGroup.tableName + " ug on ug.id=ugl.usergroupid where ug.alias in('" + role + "'))";
//		}
//		List<Map<String, Object>> users = DML.query(userSql);
//		userSql = null;
//		for (Map<String, Object> u : users) {
//			Map<String, Object> map = new HashMap<String, Object>();
//			map.put("id", u.get("ID").toString());
//			map.put("text", u.get("USERNAME").toString());
//			map.put("state", "open");
//			map.put("attributes", new HashMap<String, Object>() {
//				{
//					put("kind", "1");
//				}
//			});
//			list.add(map);
//			map = null;
//		}
//		users = null;
//
//		JSONObject jsonObject = new JSONObject();
//		jsonObject.put("", list);
//		String result = jsonObject.toJSONString();
//		result = result.substring(4, result.length() - 1);
//		output(result);
//
//		result = null;
//		jsonObject = null;
//		list = null;
//	}
}
